home *** CD-ROM | disk | FTP | other *** search
-
- regc( 0, "TFACTOR" )
- regc4f( 3, %dirtcolor_r, %dirtcolor_g, %dirtcolor_b, 0.0 )
- regc4f( 4, %dirtsnow, %dirtgravel, %dirtmud, 0.0 )
- regc4f( 5, %daycolor_r, %daycolor_g, %daycolor_b, %daycolor_a )
- regc4f( 6, %ambient_r, %ambient_g, %ambient_b, %ambient_a )
-
- pshader("
-
- ps_1_4
-
- #include <cardef.h>
-
- #define DirtLevel c0.a
- #define DirtColor c3
- #define DirtType c4
- #define DayColor c5
-
- #define Diffuse v0.a
- #define SpotDiffuse v0
- #define Specular v1
- #define Fresnel v1.a
- #define Ambient c6
- #define Lights c0
-
- def c7, 0, WATERDEEP, SHADOWSMUL, SOFTSHADOWS
- texld r0, t0 ;texture
- texld r1, t0 ;Dirt
- texld r2, t2 ;ColorMap
- texld r3, t3 ; Clouds
- texld r4, t4 ; Cubemap
- texld r5, t0 ; LightMask
-
- dp3_sat r1.rgb, DirtType, r1
-
- mul_sat r1, r1.b, DirtLevel ; dirtmask
-
- mad_x2_sat r2, r2.a, 1-r3.a, c7.a ; shadows + SOFTSHADOWS
-
- dp3 r5.rgb, Lights, r5
-
- mul r4.rgb, r4, 1-r1
- +mul r5.a, r5.b, 1-r1.b
-
- mul r5, r5.a, r0
-
- phase
- texld r0, t0
- // r1 - dirtmask
- // r2 - shadows (przemnozyc przez 2(SHADOWSMUL)!)
- // r3 - empty
- // r4 - Cubemap*dirtmask
- // r5 - Lights
-
- mul r3.rgb, r0_x2.a, 1-r1.b ; specularmask
- +mul_sat r1.a, r2.b, Diffuse
-
- lrp r0.rgb, r1.b, DirtColor, r0
- +mad_sat r4.a, Fresnel, r3.b, r0_bx2.a ; cubemap mask
-
- mul r4.rgb, r4, r4.a ; cubemap
- +mul_sat r3.a, r3.b, r2.b ; final specular mask
-
- mad_sat r3.rgb, r3.a, Specular, r4 ; specular+cubemap
- +mad_sat r1.a, r1.a, Ambient.b, Ambient.a ; final diffuse
-
- mad_sat r3, r0, r1.a, r3 ; color*diffuse+specular+cubemap
-
- #if VS_SPOTLIGHTS
- mad_sat r5.rgb, r0, SpotDiffuse, r5
- #endif
- mad_sat r0.rgb, r3, DayColor, r5
- +mov r0.a, c7.g
-
- ")
-
-